package com.ruoyi.mes.service.impl;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.mes.domain.SleOrderPro;
import com.ruoyi.mes.domain.WkspTaskCard;
import com.ruoyi.mes.mapper.LnyStoreroomMapper;
import com.ruoyi.mes.mapper.SleOrderProMapper;
import com.ruoyi.mes.mapper.WkspTaskCardMapper;
import com.ruoyi.mes.utils.CodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.mes.mapper.WkspTaskMapper;
import com.ruoyi.mes.domain.WkspTask;
import com.ruoyi.mes.service.IWkspTaskService;

/**
 * 车间任务Service业务层处理
 * 
 * @author CFL
 * @date 2024-04-28
 */
@Service
public class WkspTaskServiceImpl implements IWkspTaskService 
{
    @Autowired
    private WkspTaskMapper wkspTaskMapper;

    @Autowired
    private LnyStoreroomMapper lnyStoreroomMapper;

    @Autowired
    private WkspTaskCardMapper wkspTaskCardMapper;

    /**
     * 查询车间任务
     * 
     * @param id 车间任务主键
     * @return 车间任务
     */
    @Override
    public WkspTask selectWkspTaskById(Long id)
    {
        return wkspTaskMapper.selectWkspTaskById(id);
    }

    /**
     * 查询领料清单
     *
     * @param proId 产品id
     * @return 领料清单集合
     */
    public List<SleOrderPro> getPickingList(Long proId)
    {
        return lnyStoreroomMapper.selectPickingList(proId);
    }

    /**
     * 查询车间任务列表
     * 
     * @param wkspTask 车间任务
     * @return 车间任务
     */
    @Override
    public List<WkspTask> selectWkspTaskList(WkspTask wkspTask)
    {
        return wkspTaskMapper.selectWkspTaskList(wkspTask);
    }

    /**
     * 新增车间任务
     * 
     * @param wkspTask 车间任务
     * @return 结果
     */
    @Override
    public int insertWkspTask(WkspTask wkspTask)
    {
        BaseController baseController = new BaseController();
        String username = baseController.getUsername();
        String wkspTaskSn = CodeUtils.wkspTaskCodeCreat();
        wkspTask.setCreatedBy(username);
        wkspTask.setCreatedTime(DateUtils.getNowDate());
        wkspTask.setSn(wkspTaskSn);
        return wkspTaskMapper.insertWkspTask(wkspTask);
    }

    /**
     * 拆卡-新增车间任务卡
     *
     * @param wkspTaskCard 车间任务
     * @return 结果
     */
    @Override
    public AjaxResult insertWkspTaskCard(List<WkspTaskCard> wkspTaskCard)
    {
        BaseController baseController = new BaseController();
        String username = baseController.getUsername();
        Date nowDate = DateUtils.getNowDate();
        //插入车间任务卡表
        for (int i = 0; i < wkspTaskCard.size(); i++){
            WkspTaskCard wkspTaskCardTemp = wkspTaskCard.get(i);
            wkspTaskCardMapper.insertWkspTaskCard(wkspTaskCardTemp);
        }
        return AjaxResult.success("拆卡成功");
    }


    /**
     * 修改车间任务
     * 
     * @param wkspTask 车间任务
     * @return 结果
     */
    @Override
    public int updateWkspTask(WkspTask wkspTask)
    {
        return wkspTaskMapper.updateWkspTask(wkspTask);
    }

    /**
     * 确认开工-修改车间任务
     *
     * @param wkspTask 车间任务
     * @return 结果
     */
    @Override
    public int updateStartWork(WkspTask wkspTask)
    {
        wkspTask.setState(2);
        return wkspTaskMapper.updateStartWork(wkspTask);
    }

    /**
     * 批量删除车间任务
     * 
     * @param ids 需要删除的车间任务主键
     * @return 结果
     */
    @Override
    public int deleteWkspTaskByIds(Long[] ids)
    {
        return wkspTaskMapper.deleteWkspTaskByIds(ids);
    }

    /**
     * 删除车间任务信息
     * 
     * @param id 车间任务主键
     * @return 结果
     */
    @Override
    public int deleteWkspTaskById(Long id)
    {
        return wkspTaskMapper.deleteWkspTaskById(id);
    }
}
